{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "oDP4nK_Zgyg-"
   },
   "source": [
    "# MAML Tutorial with JAX\n",
    "\n",
    "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/google/jax/blob/master/docs/notebooks/maml.ipynb)\n",
    "\n",
    "Eric Jang\n",
    "\n",
    "Blog post: https://blog.evjang.com/2019/02/maml-jax.html\n",
    "\n",
    "\n",
    "21 Feb 2019\n",
    "\n",
    "Pedagogical tutorial for implementing Model-Agnostic Meta-Learning with JAX's awesome `grad` and `vmap` and `jit` operators.\n",
    "\n",
    "## Overview\n",
    "\n",
    "In this notebook we'll go through:\n",
    "\n",
    "- how to take gradients, gradients of gradients.\n",
    "- how to fit a sinusoid function with a neural network (and do auto-batching with vmap)\n",
    "- how to implement MAML and check its numerics\n",
    "- how to implement MAML for sinusoid task (single-task objective, batching task instances).\n",
    "- extending MAML to handle batching at the task-level"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "zKVdo3FtgyhE"
   },
   "outputs": [],
   "source": [
    "### import jax.numpy (almost-drop-in for numpy) and gradient operators.\n",
    "import jax.numpy as jnp\n",
    "from jax import grad"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "gMgclHhxgyhI"
   },
   "source": [
    "## Gradients of Gradients\n",
    "\n",
    "JAX makes it easy to compute gradients of python functions. Here, we thrice-differentiate $e^x$ and $x^2$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "Mt-uRwBGgyhJ",
    "outputId": "db7f718c-c2fb-4f7e-f31c-39a0d36c7051"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.7182817\n",
      "2.7182817\n",
      "2.7182817\n",
      "4.0\n",
      "2.0\n",
      "0.0\n"
     ]
    }
   ],
   "source": [
    "f = lambda x : jnp.exp(x)\n",
    "g = lambda x : jnp.square(x)\n",
    "print(grad(f)(1.)) # = e^{1}\n",
    "print(grad(grad(f))(1.))\n",
    "print(grad(grad(grad(f)))(1.))\n",
    "\n",
    "print(grad(g)(2.)) # 2x = 4\n",
    "print(grad(grad(g))(2.)) # x = 2\n",
    "print(grad(grad(grad(g)))(2.)) # x = 0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7mAd3We_gyhP"
   },
   "source": [
    "## Sinusoid Regression and vmap\n",
    "\n",
    "To get you familiar with JAX syntax first, we'll optimize neural network params with fixed inputs on a mean-squared error loss to $f_\\theta(x) = sin(x)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "JN9KA1PvgyhQ"
   },
   "outputs": [],
   "source": [
    "from jax import vmap # for auto-vectorizing functions\n",
    "from functools import partial # for use with vmap\n",
    "from jax import jit # for compiling functions for speedup\n",
    "from jax import random # stax initialization uses jax.random\n",
    "from jax.experimental import stax # neural network library\n",
    "from jax.experimental.stax import Conv, Dense, MaxPool, Relu, Flatten, LogSoftmax # neural network layers\n",
    "import matplotlib.pyplot as plt # visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "DeEALFIHgyhU"
   },
   "outputs": [],
   "source": [
    "# Use stax to set up network initialization and evaluation functions\n",
    "net_init, net_apply = stax.serial(\n",
    "    Dense(40), Relu,\n",
    "    Dense(40), Relu,\n",
    "    Dense(1)\n",
    ")\n",
    "\n",
    "rng = random.PRNGKey(0)\n",
    "in_shape = (-1, 1,)\n",
    "out_shape, net_params = net_init(rng, in_shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "izIi-P1agyhY"
   },
   "outputs": [],
   "source": [
    "def loss(params, inputs, targets):\n",
    "    # Computes average loss for the batch\n",
    "    predictions = net_apply(params, inputs)\n",
    "    return jnp.mean((targets - predictions)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "sROmpDEmgyhb",
    "outputId": "d1bf00d7-99e7-445e-b439-ea2fabd7a646"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e724302b0>"
      ]
     },
     "execution_count": 7,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD8CAYAAABw1c+bAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xd8HNW58PHfUe+9Wd2ywU22ZFku\n4IYxYGNMhwRSCOFSExJCLmkk7w03ue+b3CQXCITEgRgCN7QQmjE2NgaMG8WSkHuX1W31Xrec949Z\nC1mWrLbSaLXP9/NZdndmdubZRX7mzDlnzlFaa4QQQrgPD7MDEEIIMbok8QshhJuRxC+EEG5GEr8Q\nQrgZSfxCCOFmJPELIYSbkcQvhBBuRhK/EEK4Ga/+NlBKPQusBiq11umOZa8CUxybhAH1WuvMXj5b\nCDQBNsCqtc52UtxCCCGGSPV3565SagnQDLxwJvH3WP8/QIPW+le9rCsEsrXW1YMJKioqSqempg7m\nI0II4dZyc3OrtdbRA9m23xK/1nqbUiq1t3VKKQV8Bbh0MAH2JzU1lZycHGfuUgghxjWlVNFAtx1u\nHf9ioEJrfayP9RrYrJTKVUrdPcxjCSGEcIJ+S/z9uBV4+TzrF2mty5RSMcD7SqnDWuttvW3oODHc\nDZCcnDzMsIQQQvRlyCV+pZQXcAPwal/baK3LHM+VwJvAvPNs+7TWOltrnR0dPaBqKiGEEEMwnBL/\nZcBhrXVpbyuVUoGAh9a6yfH6CuCcBuCBslgslJaW0t7ePtRdiB78/PxITEzE29vb7FCEEKNoIN05\nXwYuAaKUUqXAL7XWa4Fb6FHNo5SKB/6mtV4FxAJvGu2/eAEvaa3fG2qgpaWlBAcHk5qaimOfYhi0\n1tTU1FBaWsrEiRPNDkcIMYoG0qvn1j6W397LsnJgleN1AZAxzPi6tLe3S9J3IqUUkZGRVFVVmR2K\nEGKUudSdu5L0nUt+TyHck0slfiGEGLeKP4Ndf4JRmA5XEr9JgoKCACgvL+emm24677aPP/44ra2t\nXe9XrVpFfX39iMYnhBhFNSfg5Vsg51nobBnxw0nidyKbzTboz8THx/Ovf/3rvNv0TPwbNmwgLCxs\n0McSQoxBrbXw4s3G66+/Br5BI35ISfwDVFhYyNSpU/n617/OtGnTuOmmm2htbSU1NZWf/OQnZGVl\n8dprr3HixAlWrlzJnDlzWLx4MYcPHwbg5MmTXHTRRcycOZNf/OIXZ+03Pd0YAslms/HQQw+Rnp7O\nrFmzePLJJ3niiScoLy9n2bJlLFu2DDCGtKiuNoY/evTRR0lPTyc9PZ3HH3+8a5/Tpk3jrrvuYsaM\nGVxxxRW0tbWN5s8lhBgIawe88nVoKIVbX4bISaNy2OHeuWuK/3znAAfLG526z+nxIfzy6hnn3ebI\nkSOsXbuWhQsXcscdd/DnP/8ZgMjISPLy8gBYvnw5a9as4YILLuCzzz7jO9/5Dh9++CEPPPAA9913\nH7fddhtPPfVUr/t/+umnKSwsJD8/Hy8vL2pra4mIiODRRx/lo48+Iioq6qztc3Nzee655/jss8/Q\nWjN//nyWLl1KeHg4x44d4+WXX+aZZ57hK1/5Cq+//jrf+MY3nPBLCSGc5t0fQvEuuOlZSF4waoeV\nEv8gJCUlsXDhQgC+8Y1vsGPHDgC++tWvAtDc3MyuXbu4+eabyczM5J577uHUqVMA7Ny5k1tvNXrG\nfvOb3+x1/1u2bOGee+7By8s4H0dERJw3nh07dnD99dcTGBhIUFAQN9xwA9u3bwdg4sSJZGYaI2XP\nmTOHwsLCYXxzIYTTHXwbvvgHLH4I0m8c1UO7ZIm/v5L5SOnZ/fHM+8DAQADsdjthYWHk5+cP6PMj\nydfXt+u1p6enVPUIMZY0nYZ3fgATMuGSn4764aXEPwjFxcV88sknALz00kssWrTorPUhISFMnDiR\n1157DTDujt2zZw8ACxcu5JVXXgHgxRdf7HX/l19+OX/961+xWq0A1NbWAhAcHExTU9M52y9evJi3\n3nqL1tZWWlpaePPNN1m8eLETvqkQYsRoDW/fD5Y2uOEZ8Bz9IVMk8Q/ClClTeOqpp5g2bRp1dXXc\nd99952zz4osvsnbtWjIyMpgxYwZvv/02AH/84x956qmnmDlzJmVlZb3u/8477yQ5OZlZs2aRkZHB\nSy+9BMDdd9/NypUruxp3z8jKyuL2229n3rx5zJ8/nzvvvJPZs2c7+VsLIZwqZy0cfx+u+DVEX2hK\nCP3OwGWG7Oxs3XMilkOHDjFt2jSTIjJ6yqxevZr9+/ebFsNIMPt3FcKtNFfCk3MgIQu++RY4sfpX\nKZU70OltpcQvhBCj5YP/NKp4Vv3BqUl/sCTxD1Bqauq4K+0LIUZRaa7Ri2fBfRB1gamhSOIXQoiR\nZrfDxh9DYAws+ZHZ0bhmd04hhHApe1+Bshy47i/gF2J2NFLiF0KIEWVpgw9+BQlzYNYtZkcDSIlf\nCCFGVu7foekU3PA0eIyNsvbYiMJFnBlKWQghBqSzFbY/CqmLYeISs6PpIiV+IYQYKTnPQkslfOV5\nsyM5S78lfqXUs0qpSqXU/m7LHlFKlSml8h2PVX18dqVS6ohS6rhSavQHpBghWmt+9KMfkZ6ezsyZ\nM3n11VcBOHXqFEuWLCEzM5P09HS2b9+OzWbj9ttv79r2scceMzl6IcSo6GyBHY9B2jJIudjsaM4y\nkBL/34E/AS/0WP6Y1voPfX1IKeUJPAVcDpQCu5VS67TWB4cY65c2/hRO7xv2bs4SNxOu/O2ANn3j\njTfIz89nz549VFdXM3fuXJYsWcJLL73EihUr+PnPf47NZqO1tZX8/HzKysq67gGQmbOEcBOfPwOt\n1bDsYbMjOUe/JX6t9Tagdgj7ngcc11oXaK07gVeAa4ewnzFnx44d3HrrrXh6ehIbG8vSpUvZvXs3\nc+fO5bnnnuORRx5h3759BAcHk5aWRkFBAd/73vd47733CAkxvyuXEGKEdbbCridg8mWQNM/saM4x\nnDr++5VStwE5wL9rret6rE8ASrq9LwXm97UzpdTdwN0AycnJ5z/yAEvmo23JkiVs27aNd999l9tv\nv50f/vCH3HbbbezZs4dNmzaxZs0a/vnPf/Lss8+aHaoQYiTteRlaa2DRD82OpFdD7dXzF2ASkAmc\nAv5nuIForZ/WWmdrrbOjo6OHu7sRtXjxYl599VVsNhtVVVVs27aNefPmUVRURGxsLHfddRd33nkn\neXl5VFdXY7fbufHGG/mv//qvrpm6hBDjlN0OnzwF8Vljrm7/jCGV+LXWFWdeK6WeAdb3slkZkNTt\nfaJjmcu7/vrr+eSTT8jIyEApxe9+9zvi4uJ4/vnn+f3vf4+3tzdBQUG88MILlJWV8e1vfxu73Q7A\nb37zG5OjF0KMqKMbofYE3PScqQOxnc+AhmVWSqUC67XW6Y73E7TWpxyvHwTma61v6fEZL+AosBwj\n4e8Gvqa1PtDf8cbisMzjlfyuQjjZsyuhoQy+/wV4jl6P+cEMy9xvVEqpl4FLgCilVCnwS+ASpVQm\noIFC4B7HtvHA37TWq7TWVqXU/cAmwBN4diBJXwghXFZpDhR/Ait/O6pJf7D6jUxrfWsvi9f2sW05\nsKrb+w3AhiFHJ4QQrmTXk+AXCrO/YXYk5yVDNgghhDM0lMKhdTDndvANNjua85LEL4QQzpD7vDGR\neva/mR1JvyTxCyHEcNkskPc8XHAFhKeYHU2/JPELIcRwHV4PzRUwd+yX9kES/4DV19fz5z//ecSP\ns3XrVnbt2jXixxFCONHutRCabAzR4AIk8Q/QYBO/1rrrpq3BkMQvhIupOgqF2yH7dvDwNDuaAZHE\nP0A//elPOXHiBJmZmTz44IMsX76crKwsZs6cydtvvw1AYWEhU6ZM4bbbbiM9PZ2SkhLWrl3LhRde\nyLx587jrrru4//77AaiqquLGG29k7ty5zJ07l507d1JYWMiaNWt47LHHyMzMZPv27WZ+ZSHEQOQ8\nCx7eMPs2syMZsLF7h8F5/Pfn/83h2sNO3efUiKn8ZN5P+lz/29/+lv3795Ofn4/VaqW1tZWQkBCq\nq6tZsGAB11xzDQDHjh3j+eefZ8GCBZSXl/PrX/+avLw8goODufTSS8nIyADggQce4MEHH2TRokUU\nFxezYsUKDh06xL333ktQUBAPPfSQU7+fEGIEdLZC/ksw/VoIGttjjHXnkonfbFprHn74YbZt24aH\nhwdlZWVUVBjDF6WkpLBgwQIAPv/8c5YuXUpERAQAN998M0ePHgVgy5YtHDz45dQEjY2NNDc3j/I3\nEUIMy+H10NEAc75ldiSD4pKJ/3wl89Hw4osvUlVVRW5uLt7e3qSmptLe3g5AYGDggPZht9v59NNP\n8fPzG8lQhRAj6Yv/hbAUSFlkdiSDInX8AxQcHExTUxMADQ0NxMTE4O3tzUcffURRUVGvn5k7dy4f\nf/wxdXV1WK1WXn/99a51V1xxBU8++WTX+/z8/HOOI4QYw+qK4OQ2yPw6eLhWKnWtaE0UGRnJwoUL\nSU9PJz8/n5ycHGbOnMkLL7zA1KlTe/1MQkICDz/8MPPmzWPhwoWkpqYSGhoKwBNPPEFOTg6zZs1i\n+vTprFmzBoCrr76aN998Uxp3hRjr9rwMKMjsbTizsW1AwzKPtvE0LHNzczNBQUFYrVauv/567rjj\nDq6//nqzw+riqr+rEKay2+GJDIhIg9veNjsaYHDDMkuJf4Q98sgjZGZmkp6ezsSJE7nuuuvMDkkI\nMVyF26G+GDLH9iicfXHJxl1X8oc//MHsEIQQzpb/IviGwrTVZkcyJC5V4h+L1VKuTH5PIYagvREO\nroOZN4K3v9nRDInLJH4/Pz9qamokWTmJ1pqamhrpTirEYB16B6xtkPE1syMZMpep6klMTKS0tJSq\nqiqzQxk3/Pz8SExMNDsMIVzL3lchfCIkDqgddUwayJy7zwKrgcpuk63/Hrga6AROAN/WWtf38tlC\noAmwAdaBtjj3xtvbm4kTJw7140IIMXyN5Ubf/aU/AaXMjmbIBlLV83dgZY9l7wPpWutZwFHgZ+f5\n/DKtdeZwkr4QQowJ+18HNMz6itmRDEu/iV9rvQ2o7bFss9ba6nj7KSD1BUKI8W/vq5AwByInmR3J\nsDijcfcOYGMf6zSwWSmVq5S62wnHEkIIc1QegtP7YNZXzY5k2IbVuKuU+jlgBV7sY5NFWusypVQM\n8L5S6rDjCqK3fd0N3A2QnJw8nLCEEML59v4TlCfMuMHsSIZtyCV+pdTtGI2+X9d99LHUWpc5niuB\nN4F5fe1Pa/201jpba50dHe0641oLIdyA3Q77XoNJl7rUuPt9GVLiV0qtBH4MXKO1bu1jm0ClVPCZ\n18AVwP6hBiqEEKYp+QwaSly+UfeMfhO/Uupl4BNgilKqVCn1b8CfgGCM6pt8pdQax7bxSqkNjo/G\nAjuUUnuAz4F3tdbvjci3EEKIkbT/dfDyhymrzI7EKfqt49da9zbm6No+ti0HVjleFwAZw4pOCCHM\nZrPCwbfgwhXgG2R2NE7hMkM2CCGEKYp2QEsVpLt+o+4ZkviFEOJ89r8OPkFwwRVmR+I0kviFEKIv\n1k5jULYpq1x2JM7eSOIXQoi+FGyFtjpIv9HsSJxKEr8QQvTlwBvgF2r03x9HJPELIURvLO1waD1M\nuxq8fMyOxqkk8QshRG+Ob4HOpnExRENPkviFEKI3B98C/3CYuMTsSJxOEr8QQvRkaYcj78HU1eDp\nbXY0TieJXwghejrxoaOa5zqzIxkRkviFEKKnrmqepWZHMiIk8QshRHfWDjiyEaZeNS6reUASvxBC\nnO3Eh9DRCNPHZzUPSOIXQoizHXjLuGlrnFbzgCR+IYT4Ulc1z+pxd9NWd5L4hRDijIKt0NEwrqt5\nQBK/EEJ86eA68A2FtPFbzQOS+IUQwmCzwOH1MGUlePmaHc2IksQvhBAAhduhvR6mXWN2JCNuQIlf\nKfWsUqpSKbW/27IIpdT7SqljjufwPj77Lcc2x5RS33JW4EII4VQH14F3IExebnYkI26gJf6/Ayt7\nLPsp8IHW+gLgA8f7syilIoBfAvOBecAv+zpBCCGEaew2o5rngsvH1UxbfRlQ4tdabwNqeyy+Fnje\n8fp5oLdm8BXA+1rrWq11HfA+555AhBDCXMWfGhOqTx//1TwwvDr+WK31Kcfr00BsL9skACXd3pc6\nlgkhxNhxaB14+Y2rCdXPxymNu1prDejh7EMpdbdSKkcplVNVVeWMsIQQon92uzGh+qTl4BtsdjSj\nYjiJv0IpNQHA8VzZyzZlQFK394mOZefQWj+ttc7WWmdHR0cPIywhhBiE8jxoLHObah4YXuJfB5zp\npfMt4O1ettkEXKGUCnc06l7hWCaEEGPDwbfBwxsudJ/mx4F253wZ+ASYopQqVUr9G/Bb4HKl1DHg\nMsd7lFLZSqm/AWita4FfA7sdj185lgkhhPm0Nqp50paCf5jZ0Ywar4FspLW+tY9V53R41VrnAHd2\ne/8s8OyQohNCiJFUsR/qTsKiH5gdyaiSO3eFEO7r4DpQHjDlKrMjGVWS+IUQ7uvQO5B8MQS5V4cS\nSfxCCPdUfQyqDrlVb54zJPELIdzToXXG89TV5sZhAkn8Qgj3dHAdJGRDqPsNJiCJXwjhfuqK4FS+\nW1bzgCR+IYQ7OrzeeHbDah6QxC+EcEcH10HsTIicZHYkppDEL4RwL02noeQzt63mAUn8Qgh3c+gd\nQLvFFIt9kcQvhHAvh9ZB1IUQM9XsSEwjiV8I4T5aaqBwp1uX9kESvxDCnRx5F7TNrev3QRK/EMKd\nHFwHYSkQN8vsSEwliV8I4R7a6qFgq1HaV8rsaEwliV8I4R6Ovgd2C0y71uxITCeJXwjhHg6ug+B4\nSJhjdiSmk8QvhBj/2hvh+BaYfi14SNqTX0AIMf4d2wy2DiPxi6EnfqXUFKVUfrdHo1LqBz22uUQp\n1dBtm/8YfshCCDFIB96EoDhImm92JGPCgCZb743W+giQCaCU8gTKgDd72XS71to9h8ATQpivo9mo\n5sm6Tap5HJz1KywHTmiti5y0PyGEcI5jm8DaLtU83Tgr8d8CvNzHuouUUnuUUhuVUjOcdDwhhBiY\ng29DYAwkX2R2JGPGsBO/UsoHuAZ4rZfVeUCK1joDeBJ46zz7uVsplaOUyqmqqhpuWEIIAZ0tcHQz\nTLsaPDzNjmbMcEaJ/0ogT2td0XOF1rpRa93seL0B8FZKRfW2E63101rrbK11dnR0tBPCEkK4vWPv\ng7UNZlxndiRjijMS/630Uc2jlIpTyrg3Wik1z3G8GiccUwgh+nfwLQiIguSLzY5kTBlyrx4ApVQg\ncDlwT7dl9wJordcANwH3KaWsQBtwi9ZaD+eYQggxIJ0tcHQTZNwCnsNKdePOsH4NrXULENlj2Zpu\nr/8E/Gk4xxBCiCE5+h5YWmHGDWZHMuZIp1YhxPi0/w0IioUUqebpSRK/EGL8aW80GnanXye9eXoh\niV8IMf4c2WiMzZMu1Ty9kcQvhBh/DrwJIQmQOM/sSMYkSfxCiPGlrd4Ym2fG9TI2Tx/kVxFCjC+H\n3zVm2ppxvdmRjFmS+IUQ48uBNyAsWWbaOg9J/EKI8aO5Ck58BOk3uf2E6ucjiV8IMX4ceBO0DWbe\nbHYkY5okfiHE+LHvnxCbDrHTzY5kTJPEL4QYH2pPQuluKe0PgCR+IcT4sO9fxnP6jebG4QIk8Qsh\nXJ/WRjVPykIISzI7mjFPEr8QwvWd3gvVR2HmTWZH4hIk8QshXN/ef4KHtzEom+iXJH4hhGuz22D/\n6zD5MgiIMDsalyCJXwjh2k58BE2nIPNWsyNxGZL4hRCubc9L4B8OF640OxKXIYlfCOG62urh0Hpj\niAYvX7OjcRnDTvxKqUKl1D6lVL5SKqeX9Uop9YRS6rhSaq9SKmu4xxRCCMAYosHWIdU8g+SsqeeX\naa2r+1h3JXCB4zEf+IvjWQghhif/JYieCvFSnhyM0ajquRZ4QRs+BcKUUhNG4bhCiPGs+jiUfg4Z\nt8pInIPkjMSvgc1KqVyl1N29rE8ASrq9L3UsO4tS6m6lVI5SKqeqqsoJYQkhxrU9L4PygFlfNTsS\nl+OMxL9Ia52FUaXzXaXUkqHsRGv9tNY6W2udHR0d7YSwhBDjlt1mJP5Jl0KIVCAM1rATv9a6zPFc\nCbwJ9JzduAzoPnhGomOZEEIMzfEt0FgGWbeZHYlLGlbiV0oFKqWCz7wGrgD299hsHXCbo3fPAqBB\na31qOMcVQri53L9DYAxMWWV2JC5puL16YoE3ldGw4gW8pLV+Tyl1L4DWeg2wAVgFHAdagW8P85hC\nCHfWWA5HN8HC74Ont9nRuKRhJX6tdQGQ0cvyNd1ea+C7wzmOEEJ0+eJFY3pFqeYZMrlzVwjhOuw2\nyHsBJi6FiDSzo3FZkviFEK7jxEfQUAxzbjc7EpcmiV8I4Tpyn4OAKJi62uxIXJokfiGEa2gohSMb\nIfNr4OVjdjQuTRK/EMI17F4LaJh7p9mRuDxJ/EKIsc/SZvTdn7IKwlPMjsblSeIXQox9+/4FbbUw\n/16zIxkXJPELIcY2reGzv0LMDEhdZHY044IkfiHE2Fa0Cyr2wfx7ZPhlJ5HEL4QY2z5bY8ypO/Nm\nsyMZNyTxCyHGrtqTcHg9ZH0LfALMjmbckMQvhBi7dj0JHl7SqOtkkviFEGNTUwV88Q9jakWZbMWp\nJPELIcamz/4CdgssfMDsSMad4Y7HL4QQztfeYNypO/1aiJxkdjQjxmKzc7C8kdyiOnKL62hqt/LC\nHT0nMXQ+SfxCiLFn91roaISFPzA7Eqeqa+kkr7jOSPRFdewprafdYgcgIcyf7NRw7HaNh8fIdluV\nxC+EGFssbfDpX4yJ1OMzzY5myOx2TUF1c1eSzy2q40RVCwBeHooZCaF8bV4KWSlhzEkJZ0Ko/6jF\nJolfCDG2fP4MtFTC4ofMjmRQWjut5JfUk+dI8l+U1FPfagEgPMCbrORwbpyTyJzkcGYlhuHv42la\nrENO/EqpJOAFjHl3NfC01vqPPba5BHgbOOlY9IbW+ldDPaYQYpxrb4Qdj8Kk5ZC60Oxozqusvo3c\norquRH/wVCM2uwZgckwQK2fEkZUczpzUcNKiAlFj6K7j4ZT4rcC/a63zlFLBQK5S6n2t9cEe223X\nWsusCUKI/n36Z2irg+X/x+xIztKzETavqI5TDe0A+Ht7kpkUxn1LJ5GVEkZWcjhhAWN7voAhJ36t\n9SnglON1k1LqEJAA9Ez8QgjRv5Ya2PUnmHY1xM82NZT+GmHnpISTnRLOnJQIpk0IxsvTtXrGO6WO\nXymVCswGPutl9UVKqT1AOfCQ1vqAM44phBhndj4Gnc2w7Bejeth+G2HjQ7h1XjJZyeFkp45uI+xI\nGXbiV0oFAa8DP9BaN/ZYnQekaK2blVKrgLeAC/rYz93A3QDJycnDDUsI4UoayoxG3YxbIGbqiB6q\ntdPKnpKGrhJ9XnFdVyNsmKMR9oasROakhJNhciPsSBlW4ldKeWMk/Re11m/0XN/9RKC13qCU+rNS\nKkprXd3Ltk8DTwNkZ2fr4cQlhHAx7zvq9C/5mdN3Xe5ohD2T5A+Un90Iu2J6nKNLZQSTosdWI+xI\nGU6vHgWsBQ5prR/tY5s4oEJrrZVS8zCGiKgZ6jHFGNDZApWHjEfVYWgsg7Z6aK8HmwW8/Y2HXxhE\npBl3XUZPgwkZMkG26F3hTtj/Oiz9ybCnVbTY7Bw61fhloi+qo9zRCOvn7UFGYhj3Lk1jTko4s5PC\nCQ90z7/J4ZT4FwLfBPYppfIdyx4GkgG01muAm4D7lFJWoA24RWstpXlXYrdD6W448QGc3AalOcb4\nKQBefhCaaIyVHhAFnj5gbTNuwKk8BEc2frmtdwAkL4CJS2HGdRCeatpXEmOIzQobfwyhSUO6S7e+\ntUcjbEkDbRYbAPGhfmSlhHOno25+2oQQvF2sEXakqLGYh7Ozs3VOTo7ZYbi38nzY9xoceAsaS0F5\nwIRMmLgEkuZB9FQjeXucp/7TZoWGEji91yjVFW6HSkenr6T5xsQaGbeAb/CofCUxBn3+DGx4CG5+\n3igQnIfWmhNVLV395nOL6zhe2QyAp4di+oQQ5qSEdz3iw1y/EXYwlFK5WuvsAW0riV906Ww1Lrlz\n1kL5F+DhDZOXQ/qNcMEV4B82/GPUFxsTZ+/7F1QeAN8QmPMtmHcPhCUNf//CdbRUw5NzYMIsuG3d\nOdMqtnXa2FNa/+VNUj0aYeckh5PlSPKzEkMJ8HHvgQgk8YvBaak2JrP+/Gmjrj56Ksy9E2beZFTj\njJTSXPj0KeOqAiDrm0Y9b0j8yB1TjB2v3Q6H1sO92yFmGqcb2sktqiOnqJa8IqMR1tqtEdZI9O7V\nCDsYkvjFwDSWw47HIe8Fo25+6mpY8B1IuXh0J7WuL4FdT0DOc0bV0by7jHFanHGFIcYk297X8Xzj\nDvImf4+/e95IblEdZfVtgNEIOysxjOwUo27enRthB0MSvzi/pgrY8RjkPAvaBrNugYXfh+gp5sZV\nVwhb/xv2vgL+EXD5f0LG18BDGuRcXUObhTzHUAfHCgr4zam7KNLR3Nj5n0SHBDInNdy4QSolnOnx\n0gg7FINJ/O5dKeZu2uph5+Pw6RqwdULmrbDkx8PuQuc04alw/V9gwb2w4Ufw9neNq4CrH4e4mWZH\nJwZIa01hTWu3O2FrOVbZjNbg6QH/CHyCII8Oai99gm0zs0lws0bYsUASvzuwtMPnf4Xtjxp1+DNv\nNm6UGaszG03IgDs2wZ5XjBt7nr7EmH5vyY/B28/s6EQP7RYb+8oajPr5QuMmqdqWTgBC/LzISgln\n9ax4Y2ybmnfw3fgpXP5rLl242OTI3de4SvwPvPIF/t6exIb4OR6+xIb4ERPiS2SgL54jPKvNmGO3\nw75/wge/NrpkTr4Mlv/S6EUx1illXJFcuAI2/wK2/w8cXAfXPgXJ882Ozq1VNrV3danMKapjf1kD\nFptRZZwaGcCyKTFkpxq9bSZHB305m1RZLmz+MaQtg4u+a+I3EOMm8WutOVndQnl9OzUtHfRsuvD0\nUEQH+RIb4kuM46QQF+LneO2gyDB8AAAXWUlEQVQ4SQT7ERbgPT56C5z4CN7/D6MP/YQMuO7PkLbU\n7KgGLyDCiD39RnjnB/DcSrj4+7DsYfDyNTu6cc9m1xw53URucR25hbXkFtdRUms0wvp4eZCRGMod\nCyd29Z2PDOrj/0lLNbx6GwTFwU3Pnv/+DzHixmXjrsVmp6qpg8qmDioa26lobKey0Xh9urGdqqYO\nTje2d/UJ7s7Hy4OYYONKIc5xtdD9xHDmpBHs5z2crzhyTu83Ev6JDyA0GZb/h5E0x0MDaUcTbPo5\n5D1vDANxw1+Nk5pwmqZ2C/kl9V31818U19PcYQUgKsi3q6dNVko46fGh+HgN4O/KZoV/3ADFn8K/\nbXbp6RTHMunVM0DtFhuVjR1UNrVT0WicDCqbjJPE6YZ2Khyvz/zhdxfg43lWdVLP6iXjJOGLn/co\nlWzqimDrb2HPy+AXCkt+ZHSLHI+l4mPvw7rvQUsVXPJTWPggeI6bi9dRo7WmpLaN3OJacgqNRH+k\nogmtwUPBlLgQspLDjGqb5AiSIvwHfzWsNax/EHKfM6rpZn9jZL6MkMTfF7u2Y9M2FAovj4EniuYO\nK5WNxsmhwnFy6DpRNH75utNqP+ezof7eX7Y1BPsRF/rl6zPLo4N9h959rbnKqP/OWWsMqzDvblj8\nw5G98WosaK01bvXf/zokzoXr/zp2G6vHALu209rZyaFTTeQXN5JbVE9ucR1VTR0ABPl6MTs5rKvK\nJjMpzDlXtVseMboOL3oQLntk+PsTfXLLxK+15g85f6C2vbbr0dTZRKullVZrKx22jrO291AeeHt4\n4+vpS7BPMME+wYT6hBIVEEWUXxQxATEkBCeQGJRIUnASAd4B/R6/oc1y1gmhssm4cjhzoqhwLDsz\nJOwZSkFkoI/jxGCcEIwTw3kaqFtrYecfjbttre1GSWrpTyE0YVC/m8vb9y9494fGyKCX/8q443g8\ntNH0w2q3Ut5cTmlzKWXNZZxqPkVNew3VbdXUttXSbGmmoaOJFksLFnsnmh6FEu2Bl/LD3yuQUN8g\nYgMjiPSPJNI/ktiAWBKCEogPiic5OJkwvyHeSLfjcdjyS8i+A6561C3+v5jJLRM/wPJ/Lsfb05sI\nvwjC/cIJ9QklwDuAAK8AfDx98FSeeCgPNBqL3YLFbqHN0kazpZnmzmbqOuqobqumuq36nBPFhMAJ\npIWlMTl0MtMipzEtchqpIal4qMGV1O12TU1L59lXDg3tXe0RZ1731UB9YWAbd3i9x9Xt7+Cj2zkW\nvYKCGd8lIH7a+GugHqjGcnj7fqNdI20ZXPsnY9TQcaK6rZqDNQc5VHOIo3VHKWgooKixCIv9yzYq\nT+VJiE84PoRitQTQ1OpNc5sX2P3wwIuY4AASQgOJD/cjJsQbX29os7bR3NlMs6WZ+o56atpqqGmv\noamz6azjh/uGMzF0IpPDJjM1cirTIqZxQfgF+Hqepxrxk6dg08NG+9INz0hj7ihw28TvLFprGjoa\nKGsuo6S5hOLGYgoaCjhRf4KC+gI67UYf5QCvAGZGzyQjOoPM6Exmx8wmyCfIKTH0bKBuqThB6tHn\nmFnxNp7awnbvhfzRegN5bXHnfNblG6iHQmvjTuTNvwAPL7ji15D1LZcrZdrsNg7XHiavMo/8ynz2\nVO2horWia31ScBKTQieRFJyKssZQWx9M4Wlf9hdDU7tRqo8M9OkavGxOSjgzE0IH1dbUYmmhvLmc\nsuYyihqLONlwkpMNJzlWd4wmi3FS8PLwYmr4VDJijL/97LhsovyjjC7Em39uTJo+7RqjB4/nOPo7\nG8Mk8Y8gi93CyYaTHKo5xP7q/eyp2sPRuqPYtA1P5cmMyBnMjZvLxfEXMztmNt7D+aPXGop2wqd/\ngSMbQHlCxleNxsyoycDwGqgDHQ3UMWOlgdoZagtg3feNIaAnLoVrnhjTY/9rrSloKGBn2U4+P/05\nuRW5NFuMoYYnBE4gIzqDmVEzifGdRGNjDAdKOsgtruPQqaauKsMLY4McST6COSnhpEYGjMgVn9aa\nsuYyDtceZl/1PvZW7eVAzQHarEb3ztSQFOa1tHBx+SHmzfg6wVf+Tkr6o0gS/yhrtbSyp2oPu0/v\nZvfp3eyv3o9VW/H38md+3HwWJy5maeJSYgNjB7jDWtj7KuT9rzF0sX84zLkd5t415Dr8Md1A7Wx2\nO+T9HTb/hzERzJKHjL7/Y6SHU5u1jc9OfcbHpR+zo2wHp1tOA5ASksLcuLlkRWcTzIUUnPbq6lZ5\nutGYRSrAx5PMJKMRNislnKykcEIDzCtRW+wWjtQeYffxd9l98BVyVSetHh54Kk9mRc9iSeISliYu\nZXLYZPeqfjSBJH6TtVha+PzU5+ws38mOsh2UNZcBMC1iGpcmX8plyZcxKWzS2f8QLG1wbDPsf8Mo\n3ds6IX62kfBnfgV8zt+47Ayj3kA90hrKYNPP4ODbEDkZrvydMb+ACera69haspUPij/g01Of0mHr\nINA7kAUTFjA7agGB9ukUnPIxZpEqrafdYpyAE8L8yUoxBi+bkxLO1LhgvMbKCRaMq9LPnzGG1vAJ\nwnL1H9kTHseu8l3sKNvBodpDACQEJbAsaRnLk5czO2Y2nnIl4HSS+McQrTUn6k+wtXQrW0u2srdq\nLxpNakgql8cvYoX258KSfNSxTdDZbExhmH6jMTb9GB2YrLcG6jM3ynV/XdPS2fcd1KF+xAZ/2fYw\nondQH99iDPpWW2A0/l72yKjcRFTTVsMHxR+wqXATORU52LWd+MB4ZkctIkxnUF2dwBfFTZyoagHA\ny0MxIz7krPr5CaFjeACzslzY/H+M6sjJlxv99IPPvqqtaKlge9l2tpZs5ZPyT+i0dxLhF8GlyZey\nInUF2bHZg+paLfomiX+s6mii6vhmPjz2Fu/XHWS36sCuFKlWOysCU1k145ukTb9p3NyMZLHZqW7+\nstdSpePO6e4nh8qmjj7voD5zEojt2UDdrT0iyHeAv5W1A3avhW2/h7ZamHEDLPqB0+/8behoYEvR\nFjYWbmT36d3YtZ04/yTivefT0TCDw8XB1Lca7S2h/t5nTRWYkRiGv48LlIRrTsBH/9e4hyIgCi79\nhXFl2s+JusXSwo6yHWwp2sLHpR/TZm0jwi+Cy1Mu58qJVzI7Zvage8mJL41a4ldKrQT+CHgCf9Na\n/7bHel/gBWAOUAN8VWtd2N9+h5z4j2+B4HjjRh4z63O1hoZSqD4CVUfg1B5jDtvqo4A2ep3EZ1GT\nsoAPgkPYVH+I3RU5aDTTIqaxauIqrpx45cDbBFxcrw3UjhPDacfJoaKhnZZO2zmfDfTpbVC+8zRQ\ntzcY9z989jR0NhkNwBfdD5MuHfIJt93aztaSrbxb8C47ynZg1VaCPOLwapvN6fIpWNpjAcWk6MBu\niT6CtKjALwcwG+vsNji6CXb/zeg26+VvDLS28AHwCxn07tqsbews28l7he/xccnHtNvaiQ2IZdXE\nVVyVdhVTIkyeG8IFjUriV0p5AkeBy4FSYDdwq9b6YLdtvgPM0lrfq5S6Bbhea/3V/vY9pMRvt8H/\nizduZlKeEJEGERON/tyhicbgUIFREBBpNJb6BIJPEHgH9D+OjdZGnbulFTpbjOTRVm8Mcdxc6XhU\nGBOL1xcbD0vrl58PnmDU10/INCYqT5pnHL+bytZKNhVuYuPJjeyr3odCMS9uHlelXcXlKZc7rZuo\nKzvTQH36rPGXulUzOU4c52ugjnGcCJICrCxuWEd6ycv4tVdiC4hGz7gBr1k3QXxWvycBm93Gp+Wf\n8/Kht/jk9Ed02ttQtlA66mdhaczAx5ZEZpKR5LOSjYfLzSLVVgcFW+HoZqP9qbXaKFhlf9voKhvs\nnIJJq6WVj0o+YuPJjews24lVW5kcNpnVaau5Ku0q4gLP7bIszjVaif8i4BGt9QrH+58BaK1/022b\nTY5tPlFKeQGngWjdz0GHlvjtRg+YqiNQddh41BUZJe+22vN/1sMLPH2NZwWO/4DdajxsnaDPTSZn\n8Y8wTjBhycYjcrIxo1XUFAiKHtRXKWosYkPBBtYXrKe4qRhfT1+WJS3j6klXc1H8RXh7SL/ovvTX\nQG1UORlXFxabxgcLyzy+4DrPnVzq8QW+ykozARzxnUlxUAYtwROxhqZiC0miw8OPivYiDjZ+xPG2\nbVhVPdrmi6VpJsGWecyLm8vclDCyk4KYGuOHt7YZfzu2DrD2eLZ1Gncbn3m2W43Ci7Y7/ta6/xNR\nxt+mh6fjb9XHeHj5gJefcXXb9ex/9vvzVb9YO4xCTHsjNJ0y/q00lEDFATiVb8yIBkZBafLlMP0a\nuPDKEa2KrGuvY3PhZtYXrCe/Kh+FYm7cXFanrZYCUD9GK/HfBKzUWt/peP9NYL7W+v5u2+x3bFPq\neH/CsU31+fbt9Dr+zhajVN5aYwwP295gXOZ3NBu9aWydxsNuNUr3Z/7ReXgb/9g8fcDb3yilewcY\ng6D5hRpzwgbGQGC08Y/QybTW7K3eyzsn3mFT4SbqO+qJ8IvgyolXcvWkq5keMV26yA2R3a6pa+00\nrhia2qlu6qChrpqw8o+Jq91NWvMXxNuM3ljVnh68GxjI+qBADvv64Kk1C9osXNXSwbKODgK0HWW3\nobSt/wLCaPPw/vKkoTyN+OxWo5ur/dx7OwDjvocJGcYVavJFxlhIJrQ7lTSWsP7ketafMApAfp5+\nLEtextVpRgFIGoXP5pKJXyl1N3A3QHJy8pyioqIhxTVeWWwWdpTt4J2Cd9hashWL3UJaaFrX5XB8\nULzZIY4rrZZWPjz+DutPvMUnNQewo5nuHcHV/oms8okmwsPXGBQP5SiJOxKrp4+RJD28jRK3p8+5\nz2c9vI2Hh5fjitPD8eh2Qtd242rAbjMStu3Mo8MotVs7wNpmzLRm7f5wXF3YrcYVsbYZMZ6J1yfI\nKMD4hhjVNqFJEJIw5mY5614Aeq/wPRo6Gojwi2DVxFWsnrRaCkAO7lnV40YaOhrYXLSZ9SfWk1eZ\nB0BWTBZXpV3FitQVhPqGmhyha7LarXx66lPWF6znw+IPabO2ER8Yz1VpV7E6bTVpYWlmh+j2LDYL\n28q2sf7EeraWbsVqt5IaksrqtNWsSltFUnCS2SGaZrQSvxdG4+5yoAyjcfdrWusD3bb5LjCzW+Pu\nDVrrr/S3b0n8A1faVMqGk0Z7wMmGk3h5eLEofhErJ65kWdKyfkcVdXd2bSe/Mp8NJzfwftH71LbX\nEuwTzIrUFVw18SqyYrOki+EYdaYA9G7Bu+RW5AIwK2oWV068khWpK4gOGFzbmqsbze6cq4DHMbpz\nPqu1/r9KqV8BOVrrdUopP+B/gdlALXCL1rqgv/1K4h88rTWHag+xoWADGws3UtlaiZ+nH4sTF7Mi\ndQWLExbLScDBru3srdrL5qLNbC7cTEVrBX6efixNWsqVE69kccJifDxdrAeOmzvVfIqNhRvZULCB\nI3VHUCjmxM5hReoKLku5zBhAbpyTG7jcnF3byavI473C97pKsX6efixMWMjy5OUsSVzidtVBVruV\nvIo8thRv4YPiD6hsrcTbw5uFCQtZkbqCZUnLCPQO7H9HYsw7UX+CTYWbeK/wPU42nEShmB0zm8tS\nLmN58vJx2x4miV90sdlt5FXmsblwMx+WfEhlayVeyous2KyuAbRSQ1PNDnNENHQ0sKt8F1tLtrKj\nbAeNnY34evqyMH4hl6VcxiVJlxDsE2x2mGKEaK05Xn+c94veZ0vxFo7VHQPgwvALWZq4lEuSLmFG\n5IxxM26QJH7RK7u2c6D6AB8Uf8DHpR9zvP44AIlBiVwcfzEXx19Mdly2y14NWGwW9tfs55PyT9hZ\nvpP91fuxazvhvuEsTlzMJUmXsDB+oVR5uamixiI+Kv6IraVb+aLyC+zaTqhvKBdNuIiL4y9m/oT5\nLn01IIlfDEhpUynby7azq2wXn5/+nFZrKwrFlIgpZMdmkxWbRUZ0BjEBMWaH2qtWS2vXnAg5FTl8\nUfkFbdY2FIr0qHQujr+YRQmLmBk1c9yU6oRzNHQ0sLNsJzvLd7KrfBfVbUYP84SgBObFzWN2zGwy\nYzJJDUl1ma6ikvjFoFlsFmNOgYrd5JzOYU/Vnq7pJ+MC40iPTGdqxFSmRU7jgrALiAuMG9V/EA0d\nDRQ0FHC49jCHag5xsOYgx+qPYXfcMDU5bDJz4+Yaj9i5Q58nVrgdrTXH6o+x+/RuPjv1GbkVuTR2\nNgIQ6hvK9IjpTI+c3vW3nxSSNCbvnpfEL4at09bJ4drD7K3ay56qPRysOUhxU3HXen8vf1JDUkkJ\nSSE+KJ6EoATiAuOI9DMm7A7zDcPX03dAJweL3UJTZxM1bTVdcx6XNZdR1lxGaVMpJxtOUtNe07V9\nuG840yKnkR6VTmZ0JrOiZ7ls9ZQYe+zaTmFDIflV+eyt2ttVyLA67nT2Ul6khKSQFJJEYlAiicGJ\nxAbEEuUfRZR/FGG+YQR4BwyoG7Bd22nqbKK2vZba9lo6rB1cnHDxkOKWxC9GRHNnM0fqjnCi/gQn\nG05S0FBASVMJp1pOdf2j6M5LeRHoE4i/lz9eygsvDy+UUljtVqx2K522TpotzedMbH9GtH80CUEJ\npIamkhaaRlpoGlMiphAbEOsyl99ifOi0dXK8/rgx77Zj/u2SphLKmsu6pp7sTqEI8gnC39Mfb0/v\nrisEm7Zh13Y6bB20WFrO+WyEXwQff/XjIcU4mMQvg12IAQvyCWJO7BzmxM45a7nNbqO6rZqK1gpq\n2mqoaa+hvqOeVksrzZZm2qxtWO1WbHYbNm3Dy8M4Cfh4+hDkHWQ8fIKI9I8kys8oNcUFxuHnNbaG\nDhDuy8fTh+mRRpVPd1prattrqWqroqq1iuq2aho7G2nqbKKps4kOWwcWu4VOWycAHsqYltLH04dA\n70ACvAMI9g4mwj+CCL8IIv0iR+X7SOIXw+bp4UlsYKzbzB8gxBlKKSL9jerNqRFTzQ5nwORedCGE\ncDOS+IUQws1I4hdCCDcjiV8IIdyMJH4hhHAzkviFEMLNSOIXQgg3I4lfCCHczJgcskEpVQW42mzr\nUcA5k8iPc/Kd3YN8Z9eQorUe0HyTYzLxuyKlVM5Ax8kYL+Q7uwf5zuOPVPUIIYSbkcQvhBBuRhK/\n8zxtdgAmkO/sHuQ7jzNSxy+EEG5GSvxCCOFmJPGPAKXUvyultFIqyuxYRppS6vdKqcNKqb1KqTeV\nUuNyslul1Eql1BGl1HGl1E/NjmekKaWSlFIfKaUOKqUOKKUeMDum0aKU8lRKfaGUWm92LCNFEr+T\nKaWSgCuA4v62HSfeB9K11rOAo8DPTI7H6ZRSnsBTwJXAdOBWpdT083/K5VmBf9daTwcWAN91g+98\nxgPAIbODGEmS+J3vMeDHgFs0nmitN2utz0y4+ymQaGY8I2QecFxrXaC17gReAa41OaYRpbU+pbXO\nc7xuwkiECeZGNfKUUonAVcDfzI5lJEnidyKl1LVAmdZ6j9mxmOQOYKPZQYyABKCk2/tS3CAJnqGU\nSgVmA5+ZG8moeByj4GY3O5CRJHPuDpJSagsQ18uqnwMPY1TzjCvn+85a67cd2/wco3rgxdGMTYws\npVQQ8DrwA611o9nxjCSl1GqgUmudq5S6xOx4RpIk/kHSWl/W23Kl1ExgIrBHKQVGlUeeUmqe1vr0\nKIbodH195zOUUrcDq4Hlenz2Dy4Dkrq9T3QsG9eUUt4YSf9FrfUbZsczChYC1yilVgF+QIhS6h9a\n62+YHJfTST/+EaKUKgSytdauNtDToCilVgKPAku11lVmxzMSlFJeGA3XyzES/m7ga1rrA6YGNoKU\nUXp5HqjVWv/A7HhGm6PE/5DWerXZsYwEqeMXw/UnIBh4XymVr5RaY3ZAzuZovL4f2ITRyPnP8Zz0\nHRYC3wQudfx/zXeUhMU4ICV+IYRwM1LiF0IINyOJXwgh3IwkfiGEcDOS+IUQws1I4hdCCDcjiV8I\nIdyMJH4hhHAzkviFEMLN/H8joC70GAWsvAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# batch the inference across K=100\n",
    "xrange_inputs = jnp.linspace(-5,5,100).reshape((100, 1)) # (k, 1)\n",
    "targets = jnp.sin(xrange_inputs)\n",
    "predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "losses = vmap(partial(loss, net_params))(xrange_inputs, targets) # per-input loss\n",
    "plt.plot(xrange_inputs, predictions, label='prediction')\n",
    "plt.plot(xrange_inputs, losses, label='loss')\n",
    "plt.plot(xrange_inputs, targets, label='target')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "PxAEhrPGgyhh"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from jax.experimental import optimizers\n",
    "from jax.tree_util import tree_multimap  # Element-wise manipulation of collections of numpy arrays "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "iZtAZfEZgyhk"
   },
   "outputs": [],
   "source": [
    "opt_init, opt_update, get_params = optimizers.adam(step_size=1e-2)\n",
    "opt_state = opt_init(net_params)\n",
    "\n",
    "# Define a compiled update step\n",
    "@jit\n",
    "def step(i, opt_state, x1, y1):\n",
    "    p = get_params(opt_state)\n",
    "    g = grad(loss)(p, x1, y1)\n",
    "    return opt_update(i, g, opt_state)\n",
    "\n",
    "for i in range(100):\n",
    "    opt_state = step(i, opt_state, xrange_inputs, targets)\n",
    "net_params = get_params(opt_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "Rm9WIz2egyho",
    "outputId": "183de82d-fdf0-4b81-9b14-01a85e6b8839"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e72d99080>"
      ]
     },
     "execution_count": 10,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# batch the inference across K=100\n",
    "targets = jnp.sin(xrange_inputs)\n",
    "predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "losses = vmap(partial(loss, net_params))(xrange_inputs, targets) # per-input loss\n",
    "plt.plot(xrange_inputs, predictions, label='prediction')\n",
    "plt.plot(xrange_inputs, losses, label='loss')\n",
    "plt.plot(xrange_inputs, targets, label='target')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7E8gAJBzgyhs"
   },
   "source": [
    "## MAML: Optimizing for Generalization\n",
    "\n",
    "Suppose task loss function $\\mathcal{L}$ is defined with respect to model parameters $\\theta$, input features $X$, input labels $Y$. MAML optimizes the following:\n",
    "\n",
    "$\\mathcal{L}(\\theta - \\nabla \\mathcal{L}(\\theta, x_1, y_1), x_2, y_2)$\n",
    "\n",
    "$x_1, y_2$ and $x_2, y_2$ are identically distributed from $X, Y$. Therefore, MAML objective can be thought of as a differentiable cross-validation error (w.r.t. $x_2, y_2$) for a model that learns (via a single gradient descent step) from $x_1, y_1$. Minimizing cross-validation error provides an inductive bias on generalization.\n",
    "\n",
    "The following toy example checks MAML numerics via parameter $x$ and input $y$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "2YBFsM2dgyht",
    "outputId": "46160194-04b7-46c9-897d-ecb11e9738be"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "grad(g)(x0) = 4.0\n",
      "x0 - grad(g)(x0) = -2.0\n",
      "maml_objective(x,y)=5.0\n",
      "x0 - maml_objective(x,y) = -2.0\n"
     ]
    }
   ],
   "source": [
    "# gradients of gradients test for MAML\n",
    "# check numerics\n",
    "g = lambda x, y : jnp.square(x) + y\n",
    "x0 = 2.\n",
    "y0 = 1.\n",
    "print('grad(g)(x0) = {}'.format(grad(g)(x0, y0))) # 2x = 4\n",
    "print('x0 - grad(g)(x0) = {}'.format(x0 - grad(g)(x0, y0))) # x - 2x = -2\n",
    "def maml_objective(x, y):\n",
    "    return g(x - grad(g)(x, y), y)\n",
    "print('maml_objective(x,y)={}'.format(maml_objective(x0, y0))) # x**2 + 1 = 5\n",
    "print('x0 - maml_objective(x,y) = {}'.format(x0 - grad(maml_objective)(x0, y0))) # x - (2x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "V9G-PMxygyhx"
   },
   "source": [
    "## Sinusoid Task + MAML\n",
    "\n",
    "\n",
    "Now let's re-implement the Sinusoidal regression task from Chelsea Finn's [MAML paper](https://arxiv.org/abs/1703.03400)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "s1v5VABkgyhy"
   },
   "outputs": [],
   "source": [
    "alpha = .1\n",
    "def inner_update(p, x1, y1):\n",
    "    grads = grad(loss)(p, x1, y1)\n",
    "    inner_sgd_fn = lambda g, state: (state - alpha*g)\n",
    "    return tree_multimap(inner_sgd_fn, grads, p)\n",
    "\n",
    "def maml_loss(p, x1, y1, x2, y2):\n",
    "    p2 = inner_update(p, x1, y1)\n",
    "    return loss(p2, x2, y2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "bQvg749Xgyh2",
    "outputId": "5043f859-c537-41b8-c390-23670795d57b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DeviceArray(2.5027603e-05, dtype=float32)"
      ]
     },
     "execution_count": 13,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x1 = xrange_inputs\n",
    "y1 = targets\n",
    "x2 = jnp.array([0.])\n",
    "y2 = jnp.array([0.])\n",
    "maml_loss(net_params, x1, y1, x2, y2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "zMB6BwPogyh6"
   },
   "source": [
    "Let's try minimizing the MAML loss (without batching across multiple tasks, which we will do in the next section)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "pB5ldBO-gyh7",
    "outputId": "b2365aa4-d7b8-40a0-d759-8257d3e4d768"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "1000\n",
      "2000\n",
      "3000\n",
      "4000\n",
      "5000\n",
      "6000\n",
      "7000\n",
      "8000\n",
      "9000\n",
      "10000\n",
      "11000\n",
      "12000\n",
      "13000\n",
      "14000\n",
      "15000\n",
      "16000\n",
      "17000\n",
      "18000\n",
      "19000\n"
     ]
    }
   ],
   "source": [
    "opt_init, opt_update, get_params = optimizers.adam(step_size=1e-3)  # this LR seems to be better than 1e-2 and 1e-4\n",
    "out_shape, net_params = net_init(rng, in_shape)\n",
    "opt_state = opt_init(net_params)\n",
    "\n",
    "@jit\n",
    "def step(i, opt_state, x1, y1, x2, y2):\n",
    "    p = get_params(opt_state)\n",
    "    g = grad(maml_loss)(p, x1, y1, x2, y2)\n",
    "    l = maml_loss(p, x1, y1, x2, y2)\n",
    "    return opt_update(i, g, opt_state), l\n",
    "K=20\n",
    "\n",
    "np_maml_loss = []\n",
    "\n",
    "# Adam optimization\n",
    "for i in range(20000):\n",
    "    # define the task\n",
    "    A = np.random.uniform(low=0.1, high=.5)\n",
    "    phase = np.random.uniform(low=0., high=jnp.pi)\n",
    "    # meta-training inner split (K examples)\n",
    "    x1 = np.random.uniform(low=-5., high=5., size=(K,1))\n",
    "    y1 = A * np.sin(x1 + phase)\n",
    "    # meta-training outer split (1 example). Like cross-validating with respect to one example.\n",
    "    x2 = np.random.uniform(low=-5., high=5.)\n",
    "    y2 = A * np.sin(x2 + phase)\n",
    "    opt_state, l = step(i, opt_state, x1, y1, x2, y2)\n",
    "    np_maml_loss.append(l)\n",
    "    if i % 1000 == 0:\n",
    "        print(i)\n",
    "net_params = get_params(opt_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "ogcpFdJ9gyh_",
    "outputId": "856924a3-ede5-44ba-ba3c-381673713fad"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e5ff89a58>"
      ]
     },
     "execution_count": 15,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nEwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# batch the inference across K=100\n",
    "targets = jnp.sin(xrange_inputs)\n",
    "predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "plt.plot(xrange_inputs, predictions, label='pre-update predictions')\n",
    "plt.plot(xrange_inputs, targets, label='target')\n",
    "\n",
    "x1 = np.random.uniform(low=-5., high=5., size=(K,1))\n",
    "y1 = 1. * np.sin(x1 + 0.)\n",
    "\n",
    "for i in range(1,5):\n",
    "    net_params = inner_update(net_params, x1, y1)\n",
    "    predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "    plt.plot(xrange_inputs, predictions, label='{}-shot predictions'.format(i))\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7TMYcZKVgyiD"
   },
   "source": [
    "## Batching Meta-Gradient Across Tasks\n",
    "\n",
    "Kind of does the job but not that great. Let's reduce the variance of gradients in outer loop by averaging across a batch of tasks (not just one task at a time). \n",
    "\n",
    "vmap is awesome it enables nice handling of batching at two levels: inner-level \"intra-task\" batching, and outer level batching across tasks.\n",
    "\n",
    "From a software engineering perspective, it is nice because the \"task-batched\" MAML implementation simply re-uses code from the non-task batched MAML algorithm, without losing any vectorization benefits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "9Pj04Z7MgyiF"
   },
   "outputs": [],
   "source": [
    "def sample_tasks(outer_batch_size, inner_batch_size):\n",
    "    # Select amplitude and phase for the task\n",
    "    As = []\n",
    "    phases = []\n",
    "    for _ in range(outer_batch_size):        \n",
    "        As.append(np.random.uniform(low=0.1, high=.5))\n",
    "        phases.append(np.random.uniform(low=0., high=jnp.pi))\n",
    "    def get_batch():\n",
    "        xs, ys = [], []\n",
    "        for A, phase in zip(As, phases):\n",
    "            x = np.random.uniform(low=-5., high=5., size=(inner_batch_size, 1))\n",
    "            y = A * np.sin(x + phase)\n",
    "            xs.append(x)\n",
    "            ys.append(y)\n",
    "        return jnp.stack(xs), jnp.stack(ys)\n",
    "    x1, y1 = get_batch()\n",
    "    x2, y2 = get_batch()\n",
    "    return x1, y1, x2, y2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "7dCIGObKgyiJ",
    "outputId": "c169b529-0f16-4f20-d20e-d802765e4068"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e5ff63748>"
      ]
     },
     "execution_count": 17,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "outer_batch_size = 2\n",
    "x1, y1, x2, y2 = sample_tasks(outer_batch_size, 50)\n",
    "for i in range(outer_batch_size):\n",
    "    plt.scatter(x1[i], y1[i], label='task{}-train'.format(i))\n",
    "for i in range(outer_batch_size):\n",
    "    plt.scatter(x2[i], y2[i], label='task{}-val'.format(i))\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "BrSX--wpgyiP",
    "outputId": "6d81e7ff-7cd9-4aef-c665-952d442369d5"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 50, 1)"
      ]
     },
     "execution_count": 18,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "P3WQ8_k2gyiU",
    "outputId": "fed1b78b-7910-4e44-a80b-18f447379022"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "1000\n",
      "2000\n",
      "3000\n",
      "4000\n",
      "5000\n",
      "6000\n",
      "7000\n",
      "8000\n",
      "9000\n",
      "10000\n",
      "11000\n",
      "12000\n",
      "13000\n",
      "14000\n",
      "15000\n",
      "16000\n",
      "17000\n",
      "18000\n",
      "19000\n"
     ]
    }
   ],
   "source": [
    "opt_init, opt_update, get_params = optimizers.adam(step_size=1e-3)\n",
    "out_shape, net_params = net_init(rng, in_shape)\n",
    "opt_state = opt_init(net_params)\n",
    "\n",
    "# vmapped version of maml loss.\n",
    "# returns scalar for all tasks.\n",
    "def batch_maml_loss(p, x1_b, y1_b, x2_b, y2_b):\n",
    "    task_losses = vmap(partial(maml_loss, p))(x1_b, y1_b, x2_b, y2_b)\n",
    "    return jnp.mean(task_losses)\n",
    "\n",
    "@jit\n",
    "def step(i, opt_state, x1, y1, x2, y2):\n",
    "    p = get_params(opt_state)\n",
    "    g = grad(batch_maml_loss)(p, x1, y1, x2, y2)\n",
    "    l = batch_maml_loss(p, x1, y1, x2, y2)\n",
    "    return opt_update(i, g, opt_state), l\n",
    "\n",
    "np_batched_maml_loss = []\n",
    "K=20\n",
    "for i in range(20000):\n",
    "    x1_b, y1_b, x2_b, y2_b = sample_tasks(4, K)\n",
    "    opt_state, l = step(i, opt_state, x1_b, y1_b, x2_b, y2_b)\n",
    "    np_batched_maml_loss.append(l)\n",
    "    if i % 1000 == 0:\n",
    "        print(i)\n",
    "net_params = get_params(opt_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "PmxHLrhYgyiX",
    "outputId": "33ac699e-c66d-46e2-affa-98ae948d52e8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e5ff63e10>"
      ]
     },
     "execution_count": 21,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# batch the inference across K=100\n",
    "targets = jnp.sin(xrange_inputs)\n",
    "predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "plt.plot(xrange_inputs, predictions, label='pre-update predictions')\n",
    "plt.plot(xrange_inputs, targets, label='target')\n",
    "\n",
    "x1 = np.random.uniform(low=-5., high=5., size=(10,1))\n",
    "y1 = 1. * np.sin(x1 + 0.)\n",
    "\n",
    "for i in range(1,3):\n",
    "    net_params = inner_update(net_params, x1, y1)\n",
    "    predictions = vmap(partial(net_apply, net_params))(xrange_inputs)\n",
    "    plt.plot(xrange_inputs, predictions, label='{}-shot predictions'.format(i))\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "cQf2BeDjgyib",
    "outputId": "fc52caf6-1379-4d60-fe44-99f4e4518698"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f6e5f5d9710>"
      ]
     },
     "execution_count": 22,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD8CAYAAACb4nSYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztnXd8VMX2wL+TTUjoTUCqQSlKEVRA\nETsq2MAOdtSnz4LP9xQVFRuiD8vP3n0IdlFsCEhvFjqE3gIECJ1QQkuf3x/3brLZbLm7e7dk93w/\nn3xyd+7cmbN3d8/MPXPmHKW1RhAEQUgMkqItgCAIghA5ROkLgiAkEKL0BUEQEghR+oIgCAmEKH1B\nEIQEQpS+IAhCAmFJ6Suleiul1iqlMpVSgz2cP08ptVgpVaSUut7t3B1KqfXm3x12CS4IgiAEjvLn\np6+UcgDrgEuAbGABcJPWepVLnXSgFjAIGKu1HmOW1wMWAl0ADSwCztBa77f7jQiCIAj+sTLT7wZk\naq03aq0LgO+Avq4VtNZZWutlQInbtb2AKVrrfaainwL0tkFuQRAEIQiSLdRpCmx1eZ0NnGmxfU/X\nNnWvpJS6F7gXoHr16mecfPLJFpuvyPJtB6lPLk3U3orn9Imlxx3VRq/n/NG8blW27j8GwCmNa5Gc\npErPZeUc4VBeESfUq0atqimBii8IghAUixYt2qu1buCvnhWlH3a01p8AnwB06dJFL1y4MOi20geP\n51bHFIaljKx4Lu+t0uOFaTd7PeeP1/t15t+jMwCY8vTFNKiZWnru7lELmLZmN+/cejq9OzQOVHxB\nEISgUEpttlLPinlnG9Dc5XUzs8wKoVxbqZGQRoIgxCJWlP4CoLVSqqVSqgrQHxhrsf1JwKVKqbpK\nqbrApWZZWCmJoCeqprx2V8pLRUEQhBjAr3bUWhcBAzGU9Wrge631SqXUUKVUHwClVFelVDZwA/Cx\nUmqlee0+4EWMgWMBMNQsCyuxMMmOBRkEQRDcsWTT11pPACa4lT3rcrwAw3Tj6drPgM9CkDFgIjnT\nr4hM9YXKTWFhIdnZ2eTl5UVbFMEDaWlpNGvWjJSU4BxFYmIh127CPct2N+l4rCNTfaGSkp2dTc2a\nNUlPT0eJvTKm0FqTk5NDdnY2LVu2DKqNuAzDENGZvih3Ic7Iy8ujfv36ovBjEKUU9evXD+kpLC6V\nfoGO/gOMlacBQYhVROHHLqF+NnGp9HUU7eryWxEEIZaJS6UfbvPOf0Yv9VtHbPqCIMQicar0Izfd\ndtftMtEXhNA4cOAAH3zwQVDXpqens3dvxRAs7mRlZdGhQ4eA2h41ahTbt2/3W2fgwIEBtetk9uzZ\nnH766SQnJzNmzJig2rCCKP0wEepE/8/1e5m7MccWWQShMhGK0g8nVpR+KLRo0YJRo0Zx8803+68c\nAtFf8QwLld+mf+uIeQBkDb/CngYFIQhe+G0lq7bn2tpmuya1eO6q9l7PDx48mA0bNtC5c2cuvPBC\nli1bxv79+yksLGTYsGH07duXI0eOcOONN5KdnU1xcTHPPPMM/fr1K23j2LFjXHvttVx77bXcc889\nHvspKirilltuYfHixbRv354vvviCatWqMXToUH777TeOHTvG2Wefzccff8yPP/7IwoULueWWW6ha\ntSpz5sxhxYoVPPzwwxw5coTU1FSmTZsGwPbt2+nduzcbNmzgmmuu4dVXX7V0X9LT0wFISgrvXDwu\nlX5MzPTFqC8IQTF8+HBWrFhBRkYGRUVFHD16lFq1arF3717OOuss+vTpw8SJE2nSpAnjx48H4ODB\ng6XXHz58mP79+3P77bdz++23e+1n7dq1jBgxgh49enDXXXfxwQcfMGjQIAYOHMizzxp7T2+77TbG\njRvH9ddfz3vvvcfrr79Oly5dKCgooF+/fowePZquXbuSm5tL1apVAcjIyGDJkiWkpqbStm1bHnro\nIZo3b06/fv1Yu3ZtBTkeeeQRn3LajSj9EBHdLsQzvmbkkUBrzVNPPcXs2bNJSkpi27Zt7Nq1i44d\nO/Loo4/yxBNPcOWVV3LuueeWXtO3b18ef/xxbrnlFp9tN2/enB49egBw66238s477zBo0CBmzJjB\nq6++ytGjR9m3bx/t27fnqquuKnft2rVrady4MV27dgWgVq1aped69uxJ7dq1AWjXrh2bN2+mefPm\njB492pZ7EipxatOPy7clCAnH119/zZ49e1i0aBEZGRk0atSIvLw82rRpw+LFi+nYsSNDhgxh6NCh\npdf06NGDiRMn+n3advd3V0qRl5fHAw88wJgxY1i+fDn33HNPwBuhUlPLQq07HA6KiooA6NevH507\nd67w98UXXwTUfqjEpXaUybcgVF5q1qzJoUOHAMNs07BhQ1JSUpgxYwabNxsh47dv3061atW49dZb\n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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Comparison of maml_loss for task batch size = 1 vs. task batch size = 8\n",
    "plt.plot(np.convolve(np_maml_loss, [.05]*20), label='task_batch=1')\n",
    "plt.plot(np.convolve(np_batched_maml_loss, [.05]*20), label='task_batch=4')\n",
    "plt.ylim(0., 1e-1)\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "id": "vCHCvXh-mm1v"
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "name": "maml.ipynb",
   "provenance": [],
   "version": "0.3.2"
  },
  "jupytext": {
   "formats": "ipynb,md:myst"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
